// packageA/pages/servicePersonalAdd/servicePersonalAdd.js
const app = getApp();
import CommonService from '../../../utils/service/commonService.js';
import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';
const util = require('../../../utils/util');
import Base64 from '../../../utils/Base64.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //提交按钮禁用
    disabled:false,
    //服务者类型选择框
    showType:false,
    //服务者类型选择数据
    typeList:[],
    //机构选择框
    showDepart:false,
    //机构选择数据
    departList:[],
    //避免表单重复提交
    code:null,
    //编辑信息
    editInfo:{}
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      code:Base64.encode(new Date() + app.globalData.userInfo.userName)
    })
  },

  //提交表单
  confirmForm(e){
    //避免表单重复提交-先禁用按钮
    this.setData({
      disabled:true
    })

    let obj=e.detail.value;
    let td=this.data;
    let editInfo=td.editInfo;
    let flag=false;

    let serviceName=obj.serviceName.trim();
    let telephone=obj.telephone.trim();

    //非空验证
    if(!this.formNotEmpty(serviceName,'serviceNameMessage','请输入服务人员姓名')){
      return;
    }
    if(!this.formNotEmpty(telephone,'telephoneMessage','请输入手机号')){
      return;
    }

    //手机号格式
    if(!util.checkPhoneFormat(telephone)){
      this.setData({
        telephoneMessage: '手机号格式错误',
        disabled:true
      })
      return;
    }

    //验证手机号是否已存在售后人员表中
    flag=this.isExist(telephone).then(value => {
      if(value){
        this.setData({
          telephoneMessage: '该号码所属人员已存在',
          disabled:true
        })
      }
      return !value;
    });

    //服务者类型
    if(!editInfo.type){
      this.setData({
        typeMessage: '请选择服务者类型',
        disabled:true
      })
      return;
    }

    Promise.all([flag]).then(value => {
      let passed=value.every(val=>{
        return val;
      });
      if(passed){
        let param={
          className:'servicePersonal',
          data:{
            requestToken: td.code,
            id: td.id,
            serviceName: serviceName,
            telephone: telephone,
            type: Number(editInfo.type),
            departId: editInfo.departId,
            dutyPerson: Boolean(editInfo.dutyPerson),
            appId: [app.globalData.myAppId]
          }
        }

        //避免表单重复提交
        Toast.loading({
          duration: 0,
          forbidClick: true,
          message: '数据提交中...'
        });

        //console.log(param);

        CommonService.goSave(param).then(res=>{
          if (res.statusCode == 200 && res.data.success == true){
            Toast.success('添加成功，稍后可到管理后台维护人员区域');

            setTimeout(() => {
              //返回列表页并刷新数据
              this.backAndRefresh();
            }, 1500);
          }else if(res.statusCode==202){
            Toast.fail('您操作太快了,请勿重复提交');
          }else{
            Toast.fail('操作失败');
          }
        }).catch((error) => {
          Toast.fail('操作失败');
        })

      }
    });
  },

  //非空验证（field要先去掉空格）
  formNotEmpty(field,messageField,messageCon){
    if(!field){
      let obj = {};
      obj[messageField] = messageCon;
      obj['disabled'] = true;
      this.setData(obj);
      return false;
    }else{
      return true;
    }
  },

  //验证手机号重复
  isExist(telephone){
    return new Promise((resolve, reject) => {
      let param={
        isAuth:false,
        className:'servicePersonal',
        data:{
          telephone:telephone,
          nbl:Base64.encode(util.timeFormatDay(new Date())),
          selectFields:["id"]
        }
      }
      CommonService.goFindList(param).then(res=>{
        if (res.data.data && res.data.data.count && res.data.data.result) {
          resolve(true);
        } else {
          resolve(false);
        }
      }).catch((error) => {
        resolve(false);
      })
    });
  },

  //用户输入时清除错误提示
  clearMessage(e) {
    let field = e.target.dataset.message;
    let obj = {};
    obj[field] = "";
    obj['disabled'] = false;
    this.setData(obj);
  },

  //显示服务者类型选择框
  onShowType(){
    this.setData({
			showType: true
    })
    //查询服务者类型
    this.getTypeList();
  },

  //查询服务者类型
  getTypeList(){
    let param = {
      isAuth: false,
      className: 'dictionary',
      data: {
        searchAll: true,
        key:'serviceStaffType',
        selectFields: ['id', 'name']
      }
    }
    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.result.length){
        let result=res.data.data.result;
        let arr=[];
        result.forEach(item => {
          arr.push({
            text:item.name,
            id:item.id
          });
        });
        this.setData({
          typeList: arr
        })
      }
    }).catch((error) => {
    })
  },

  //隐藏服务者类型选择框
  onCloseType(){
    this.setData({
			showType: false
    })
  },

  //确认服务者类型
  onConfirmType(e){
    let type='editInfo.type';
    let typeName='editInfo.typeName';
    this.setData({
      [type]:e.detail.value.id,
      [typeName]:e.detail.value.text,
      typeMessage:'',
      disabled:false
    })
    this.onCloseType();
  },

  //显示机构选择框
  onShowDepart(){
    this.setData({
			showDepart: true
    })
    this.getDepartList();
  },

  //查询机构
  getDepartList(){
    let param = {
      isAuth: true,
      className: 'depart',
      data: {
        searchAll: true,
        selectFields: ['id', 'name']
      }
    }
    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.result.length){
        let result=res.data.data.result;
        let arr=[];
        result.forEach(item => {
          arr.push({
            text:item.name,
            id:item.id
          });
        });
        this.setData({
          departList: arr
        })
      }
    }).catch((error) => {
    })
  },

  //隐藏机构选择框
  onCloseDepart(){
    this.setData({
			showDepart: false
    })
  },

  //确认机构
  onConfirmDepart(e){
    let departId='editInfo.departId';
    let departName='editInfo.departName';
    this.setData({
      [departId]:e.detail.value.id,
      [departName]:e.detail.value.text,
    })
    this.onCloseDepart();
  },

  //选择区域负责人
  onChangeDutyPerson(event) {
    let dutyPerson='editInfo.dutyPerson';
    this.setData({
      [dutyPerson]: event.detail,
    })
  },

  //返回列表页并刷新数据
  backAndRefresh(){
    let pages = getCurrentPages();
    let prevPage = pages[pages.length - 2];

    prevPage.getStaffList();
    wx.navigateBack();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})
